package com.qianyanglong.m3u88.download.app.table.editor;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class HomeCellEditor extends DefaultCellEditor {

    private JPanel panel;

    private JButton btn;

    public HomeCellEditor() {
        super(new JTextField());
        this.setClickCountToStart(1);
        this.initButton();
        this.initPanel();
        this.panel.add(this.btn);
    }

    private void initButton()
    {
        this.btn = new JButton("开始");
        this.btn.setBorder(null);
        // 设置按钮的大小及位置。
        this.btn.setBounds(20, 0, 50, 20);
        // 写一个二分法排序
        // 为按钮添加事件。这里只能添加ActionListner事件，Mouse事件无效。
        this.btn.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                // 触发取消编辑的事件，不会调用tableModel的setValue方法。
                HomeCellEditor.this.fireEditingCanceled();
                System.out.println("看看");
                // 这里可以做其它操作。
                // 可以将table传入，通过getSelectedRow,getSelectColumn方法获取到当前选择的行和列及其它操作等。


            }
        });

    }

    private void initPanel()
    {
        this.panel = new JPanel();

        // panel使用绝对定位，这样button就不会充满整个单元格。
        this.panel.setLayout(null);
    }

    @Override
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
        // 只为按钮赋值即可。也可以作其它操作。
        this.btn.setText("测试2");

        return this.panel;
    }

    @Override
    public Object getCellEditorValue() {
        return this.btn.getText();
    }
}
